home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 353_02 / templat2.cpp < prev    next >
C/C++ Source or Header  |  1992-01-18  |  2KB  |  67 lines

  1.                 // Chapter 9 - Program 7
  2. #include <stdio.h>
  3.  
  4. const int MAXSIZE = 128;
  5.  
  6. template<class ANY_TYPE>
  7. class stack
  8. {
  9.    ANY_TYPE array[MAXSIZE];
  10.    int stack_pointer;
  11. public:
  12.    stack(void) { stack_pointer = 0; };
  13.    void push(ANY_TYPE in_dat) { array[stack_pointer++] = in_dat; };
  14.    ANY_TYPE pop(void)    { return array[--stack_pointer]; };
  15.    int empty(void)       { return (stack_pointer == 0); };
  16. }
  17.  
  18. char name[] = "John Herkimer Doe";
  19.  
  20. void main(void)
  21. {
  22. int x = 12, y = -7;
  23. float real = 3.1415;
  24.  
  25. stack<int> int_stack;
  26. stack<float> float_stack;
  27. stack<char *> string_stack;
  28.  
  29.    int_stack.push(x);
  30.    int_stack.push(y);
  31.    int_stack.push(77);
  32.    float_stack.push(real);
  33.    float_stack.push(-12.345);
  34.    float_stack.push(100.01);
  35.    string_stack.push("This is line 1");
  36.    string_stack.push("This is the second line");
  37.    string_stack.push("This is the third line");
  38.    string_stack.push(name);
  39.  
  40.    printf("Integer stack ---> ");
  41.    printf("%8d ", int_stack.pop());
  42.    printf("%8d ", int_stack.pop());
  43.    printf("%8d\n", int_stack.pop());
  44.  
  45.    printf("  Float stack ---> ");
  46.    printf("%8.3f ", float_stack.pop());
  47.    printf("%8.3f ", float_stack.pop());
  48.    printf("%8.3f\n", float_stack.pop());
  49.  
  50.    printf("\n     Strings\n");
  51.    do {
  52.       printf("%s\n", string_stack.pop());
  53.    } while (!string_stack.empty());
  54. }
  55.  
  56.  
  57. // Result of execution
  58.  
  59. // Integer stack --->       12       -7       77
  60. //   Float stack --->    3.141  -12.345  100.010
  61. //
  62. //      Strings
  63. // John Herkimer Doe
  64. // This is the third line
  65. // This is the second line
  66. // This is line 1
  67.